$(document).ready(function() {
	
	//Pesquisa
	$("#cpfPesquisa").mask("999.999.999-99", {placeholder:"_"});
	$("#cpfPesquisaBtn").button({icons: {primary: "ui-icon-circle-zoomout"}, text: true}).click(
	function(){
		buscar($('#cpfPesquisa').val());
		return false;
	});
	
	//Pessoa
	
	//wizard
	var wizardObj = wizard($("form").attr("id"),"pessoas",false);
	
	//mascaras
	$("#cpf").mask("999.999.999-99", {placeholder:"_"});
	$("#cepResidencial").mask("99.999-999", {placeholder:"_"});
	
	//combo box
	loadToComboBox("#estadoNascimento",estadoDataSource,"uf");
	loadToComboBox("#estadoExpedidor",estadoDataSource,"uf");
	loadToComboBox("#estadoResidencial",estadoDataSource,"uf");
	loadToComboBox("#ramoSegurancaPublica",ramoSegurancaPublicaDataSource,"nome");
	loadToComboBox2("#banco",bancoDataSource,"numero","nome");

	//combobox dependentes
	$("#estadoResidencial").change(function(event){ loadToSubcombo(event,'#municipioResidencial','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	$("#estadoNascimento").change(function(event){ loadToSubcombo(event,'#naturalidade','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	$("#ramoSegurancaPublica").change(function(event){ loadToSubcombo(event,'#graduacaoCargo','graduacaocargoes/combo/nome?class=br.com.educa.modelo.publico.GraduacaoCargo&methodName=findGraduacaoCargoesByRamoSegurancaPublica&ramoSegurancaPublica=','nome'); });
	
	//datepickers
	datePicker("dataNascimento");
	datePicker("dataIngresso");
	datePicker("dataAposentadoria");
	
	///criando os editores de texto
    $('textarea').wysiwyg();
	
    //tooltip
	tooltip('oneToManyToolTip','Atenção, não basta apenas preecher os campos, é necessário clicar no botão + (Adicionar) para incluir!')
    //-------------------------------------- //////////////////// ------------------------------
	
	
	//oneToMany ----> FormacaoAcademica

	//combo box
	loadToComboBox("#formacaoAcademicaPais",paisDataSource,"nome");

	//combobox dependentes
	$("#formacaoAcademicaPais").change(function(event){ loadToSubcombo(event,'#formacaoAcademicaEstado','estadoes/combo/uf?class=br.com.educa.modelo.publico.Estado&methodName=findEstadoesByPais&pais=','uf'); });
	$("#formacaoAcademicaEstado").change(function(event){ loadToSubcombo(event,'#formacaoAcademicaMunicipio','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });
	
	//datepickers
	datePicker("formacaoAcademicaTipoFormacaoAcademicaPeriodoIncial");
	datePicker("formacaoAcademicaTipoFormacaoAcademicaPeriodoFinal");
	
	
	var formacaoAcademicaMunicipioAoColumns = [
					{"sTitle": "Formação", "mDataProp": "tipoFormacaoAcademica", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
					{"sTitle": "Curso", "mDataProp": "curso", "bVisible": true, "sDefaultContent":"" }
	            ];
	oneToMany("formacaoAcademicaDataGrid", JSON.stringify(formacaoAcademicaMunicipioAoColumns));
	$("#formacaoAcademicaAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("formacaoAcademica", "formacaoAcademicaDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	//oneToMany ----> experienciaProfissional
	
	//combo box
	loadToComboBox("#experienciaProfissionalPais",paisDataSource,"nome");

	//combobox dependentes
	$("#experienciaProfissionalPais").change(function(event){ loadToSubcombo(event,'#experienciaProfissionalEstado','estadoes/combo/uf?class=br.com.educa.modelo.publico.Estado&methodName=findEstadoesByPais&pais=','uf'); });
	$("#experienciaProfissionalEstado").change(function(event){ loadToSubcombo(event,'#experienciaProfissionalMunicipio','municipios/combo/nome?class=br.com.educa.modelo.publico.Municipio&methodName=findMunicipiosByEstado&estado=','nome'); });

	//datepickers
	datePicker("experienciaProfissionalPeriodoIncio");
	datePicker("experienciaProfissionalPeriodoFim");
	
	var experienciaProfissionalAoColumns = [
			              {"sTitle": "Empregador", "mDataProp": "empregador", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Período", "mDataProp": "periodo", "bVisible": true, "sDefaultContent":"",
			              "fnRender": function ( oObj ) { 
			              					var periodo = oObj.aData.periodoInicio + " até " + oObj.aData.periodoFim; 
			              					return  periodo;
		              				 }
          				   },
			              {"sTitle": "Função", "mDataProp": "funcao","sWidth": "45px", "bVisible": true, "sDefaultContent":"" }
		              ];
    //datagrid interna
	var experienciaProfissionalAoColumnsStr = 	JSON.stringify(experienciaProfissionalAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("experienciaProfissionalDataGrid", experienciaProfissionalAoColumnsStr);
	var adicionarFormacaoAcademicaBtn = $("#experienciaProfissionalAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("experienciaProfissional", "experienciaProfissionalDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	//oneToMany ----> publicacaoCientifica
	
	//tooltip
	tooltip('abntToolTip','Atenção, é orientado que a referência seja incluída no formato ABNT!')
	
	var producaoCientificaAoColumns = [
			              {"sTitle": "Tipo", "mDataProp": "tipoProducaoCientifica", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Período", "mDataProp": "referencia", "bVisible": true, "sDefaultContent":""}
		              ];
    //datagrid interna
	var publicacaoCientificaAoColumnsStr = 	JSON.stringify(publicacaoCientificaAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("publicacaoCientificaDataGrid", publicacaoCientificaAoColumnsStr);
	var adicionarFormacaoAcademicaBtn = $("#publicacaoCientificaAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("publicacaoCientifica", "publicacaoCientificaDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
	
	//oneToMany ----> idiomas
	
	//combo box
	loadToComboBox("#idiomasLingua",linguaDataSource,"nome");
	
	var idiomasAoColumns = [
			              {"sTitle": "Lingua", "mDataProp": "lingua.nome", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Entendimento", "mDataProp": "entendimento", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Fala", "mDataProp": "fala", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Leitura", "mDataProp": "leitura", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" },
			              {"sTitle": "Escrita", "mDataProp": "escrita", "sWidth": "45px", "bVisible": true, "sDefaultContent":"" }
		              ];
    //datagrid interna
	var idiomasAoColumnsStr = 	JSON.stringify(idiomasAoColumns, function(key, val) {if (typeof val === 'function') { return val + '';} return val;});              
	oneToMany("idiomasDataGrid", idiomasAoColumnsStr);
	var adicionarFormacaoAcademicaBtn = $("#idiomasAdicionarBtn").button({icons: {primary: "ui-icon-plusthick"}, text: false}).click(
	function(){
		adicionarDoFormParaDatagrid("idiomas", "idiomasDataGrid");
		return false;
	});
	//-------------------------------------- //////////////////// ------------------------------
	
});//fim do onload

function popular(){
    var registro = $("#"+$("form").attr("id")).formParams(false);
    //oneToMany formacaoAcademica
    delete registro.formacaoAcademica;
    registro.formacoesAcademicas = serializarDataGrid("formacaoAcademicaDataGrid");
    //oneToMany experienciaProfissional
    delete registro.experienciaProfissional;
    registro.experienciasProfissional = serializarDataGrid("experienciaProfissionalDataGrid");
    //oneToMany experienciaProfissional
    delete registro.publicacaoCientifica;
    registro.publicacoesCientificas = serializarDataGrid("publicacaoCientificaDataGrid");
    //oneToMany idiomas
    delete registro.idiomas;
    registro.idiomas = serializarDataGrid("idiomasDataGrid");
	$("select").each(function(){
		try{ 
			eval("registro."+$(this).attr("id")+" = findDataId(registro."+$(this).attr("id")+".id, $(\"#"+$(this).attr("id")+"\").get(0).dataSource);");
		}catch(e){}
	});
	return registro;
}

function buscar(cpf){
	jQuery.ajax({
			"type": "GET",
        	"url": "pessoas?find=ByCpfEquals&cpf="+cpf ,
        	"contentType": "application/json",
	  		"dataType": "json",
		  	error: trataErro,
			beforeSend: function(){
				$("#painelPesquisa").block({message: "<img border='0' src='" + "img/ajax-loader.gif"+"'/> &nbsp;Buscando...",
										css: { 'border': '0px',
												'background': 'transparent',
												'color': 'white'
											} 
								});
			},
			success: function(data){
				//popular form
				resultadoDaPesquisa = data;
			},
			complete: function(){
				$("#painelPesquisa").unblock();
				$("#painelPesquisa").toggle('slow');
				$("#painelCadastro").toggle('slow');
			}
		});
}
